2.4 Das Schlüsselwort INNER JOIN
INNER JOIN
mit zwei Tabellen
Für die Verknüpfung von Tabellen ist Typenverträglichkeit gefordert. Der
Datentyp der zu verbindenden Spalten muss also gleich sein, also Zahl
und Zahl oder Text und Text, usw. Wie wir wissen, dient die WHERE
-Anweisung auch
zum Filtern von Datensätzen.
Bei sehr umfangreichen SQL-Anweisungen kann man schnell ein wenig
durcheinander kommen, was denn zur Verknüpfung für einen INNER JOIN
und was zum Filtern der Datenmenge gehört. Deshalb ist eine
Schreibweise gebräuchlicher, die auf die WHERE
-Anweisung
verzichtet und stattdessen für die Verknüpfungsbedingung die ON
-Anweisung
und die Schlüsselwörter INNER JOIN
verwendet. Das sieht
dann in der allgemeinen Form so aus:
SELECT ... FROM Tabelle1 INNER JOIN Tabelle2 ON Tabelle1.Primärschlüssel = Tabelle2.Fremdschlüssel
Denken Sie daran: ein Join ist ein Join, egal ob er mit WHERE
oder mit
dem Schlüsselwort JOIN
durchgeführt wird. Es handelt sich immer
um die gleichzeitige Abfrage mehrerer Tabellen!
Jede gleichzeitige Abfrage mehrerer Tabellen mittels der WHERE
-Anweisung
ist ein innerer Join
. Dasselbe Ergebnis liefert die Anweisung
INNER JOIN ... ON
, nur die Schreibweise unterscheidet sich etwas, wie wir gleich
sehen werden.
Es gibt auch äußere Joins
, diese werden später eine Rolle spielen.
INNER JOIN
ordnet jedem Datensatz der einen Tabellen
die dazugehörenden
Datensätze der anderen Tabelle zu. Die
Information darüber, was denn unter dazugehörend
zu verstehen ist, muss
in der SQL-Anweisung enthalten sein. Als Ergebnis entsteht quasi eine neue
Tabelle, die aus den verbundenen Tabellen zusammengesetzt ist und alle
Spalten beider Tabellen enthält.
Es kommt häufig vor, dass die zu verbindenden Spalten in unterschiedlichen Tabellen gleiche
Namen haben. Man spricht dann von einem natürlichen JOIN
.
Um bei einer Abfrage zu wissen, aus welcher Tabelle die anzuzeigende
Spalte genommen werden soll, also welche Tabelle den Primär- und welche den
Fremdschlüssel enthält, muss vor den betreffenden Spaltennamen der Tabellenname
gesetzt werden. Zwischen den beiden steht dann ein Punkt und kein Leerzeichen (siehe obere allgemeine
Anweisung).
Solange die Attributnamen eindeutig sind und nur in einer der Tabellen vorkommen,
kann der Tabellenname weggelassen werden.
Das war jetzt eine Menge Theorie, sehen wir uns im anschließenden Abschnitt ein Beispiel dazu an.